package io.github.wanggit.antrpc.client.zk.zknode;

import io.github.wanggit.antrpc.commons.bean.SubscribeNode;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface INodeHostContainer {

    void addOrUpdateIpAndAppNamePair(String hostInfo, String appName);

    void deleteIpAndAppNamePair(String hostInfo);

    Map<String, List<NodeHostEntity>> entitiesSnapshot();

    List<NodeHostEntity> getHostEntities(String className, String methodFullName);

    NodeHostEntity choose(String className, String methodFullName);

    void add(String className, NodeHostEntity nodeHostEntity);

    void update(String className, NodeHostEntity nodeHostEntity);

    void delete(String className, NodeHostEntity nodeHostEntity);

    void checkLocalCacheNodes(Set<SubscribeNode> subscribeNodes);
}
